# 1 下列有一个简单的任务，每个任务都会睡眠10秒，如果是用单线程运行，至少要运行100秒,请使用多线程启动10个线程运行，实现10秒左右运行完所有任务
#
# 任务代码：
import time
import unittest,threading

import threadpool
from threadpool import ThreadPool,makeRequests

def test_task(name):
    print(f"{threading.current_thread().name}:",name)
    time.sleep(10)


class TestTask(unittest.TestCase):
    def test01(self):
        test_task(1)
    def test02(self):
        test_task(2)
    def test03(self):
        test_task(3)
    def test04(self):
        test_task(4)
    def test05(self):
        test_task(5)
    def test06(self):
        test_task(6)
    def test07(self):
        test_task(7)
    def test08(self):
        test_task(8)
    def test09(self):
        test_task(9)
    def test10(self):
        test_task(10)


def discover_case():    #加载测试用例过程
     #使用TestLoader加载测试用例
    tl = unittest.TestLoader()
    return tl.loadTestsFromTestCase(TestTask)

def run_testsuite(suite):   #执行测试任务的过程
    runner = unittest.TextTestRunner()
    result = runner.run(suite)
    return result

if __name__ == '__main__':
    pool = ThreadPool(10)   #设置线程池，启动10个线程
    suite = discover_case() #寻找测试用例
    requests = makeRequests(run_testsuite, suite, callback=None)    #设置任务请求
    for req in requests:    #把请求放入线程池中运行起来
        print("每个线程运行的任务是什么：",req)
        pool.putRequest(req)

    pool.wait()


